home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / fs / export.h.z / export.h
C/C++ Source or Header  |  1992-04-03  |  2KB  |  77 lines

  1. /*    @(#)export.h    1.6 D/NFS */
  2. /*      @(#)export.h 1.4 88/02/08 SMI      */
  3.  
  4. /*
  5.  * exported vfs flags.
  6.  */
  7. #ifndef EX_RDONLY
  8. #define EX_RDONLY    0x01        /* exported read only */
  9. #endif
  10. #define EX_RDMOSTLY    0x02        /* exported read mostly */
  11. #define    EX_NOHIDE    0x04        /* visible from upper exported fs */
  12. #define    EX_WSYNC    0x08        /* write synchronously to disk */
  13.  
  14. #define    EX_ALLFLAGS    0x0f
  15.  
  16. #define EXMAXADDRS    256        /* max number in address list */
  17.  
  18. struct exaddrlist {
  19.       unsigned naddrs;            /* number of addresses */
  20.       struct sockaddr *addrvec;        /* pointer to array of addresses */
  21. };
  22.  
  23. /*
  24.  * Associated with AUTH_UNIX is an array of internet addresses
  25.  * to check root permission.
  26.  */
  27. #define EXMAXROOTADDRS    256        /* should be config option */
  28. struct unixexport {
  29.     struct exaddrlist rootaddrs;
  30. };
  31.  
  32.  
  33. /*
  34.  * The export information passed to exportfs()
  35.  */
  36. struct export {
  37.     int ex_flags;    /* flags */
  38.     int ex_anon;    /* uid for unauthenticated requests */
  39.     int ex_auth;    /* switch */
  40.     union {
  41.         struct unixexport exunix;    /* case AUTH_UNIX */
  42.     } ex_u;
  43.     struct exaddrlist ex_writeaddrs;
  44. };
  45. #define ex_unix ex_u.exunix
  46.  
  47. #ifdef _KERNEL
  48. /*
  49.  * Closed hash table of pointers into exaddrlist's addrvec array.
  50.  */
  51. struct exaddrhashtable {
  52.       unsigned tablesize;        /* physical size of table */
  53.       unsigned hashmask;        /* strength-reduced division hash */
  54.       struct sockaddr **table;        /* pointers into addrvec */
  55.       struct sockaddr **endtable;    /* one beyond last table element */
  56. };
  57.  
  58. #define    exaddrhash(ht, sa) \
  59.     (&(ht)->table[((struct sockaddr_in *)(sa))->sin_addr.s_addr \
  60.               & (ht)->hashmask])
  61. /*
  62.  * A node associated with an export entry on the list of exported
  63.  * filesystems.
  64.  */
  65. struct exportinfo {
  66.     struct export exi_export;
  67.     fsid_t exi_fsid;
  68.     struct fid *exi_fid;
  69.     struct exaddrhashtable exi_roothash;
  70.     struct exaddrhashtable exi_writehash;
  71.     struct exportinfo *exi_next;
  72. };
  73.  
  74. extern struct exportinfo *findexport();
  75.  
  76. #endif    /* _KERNEL */
  77.